微信小程序开发 Note-3
@ 2018年8月16日 11:23:54
button
属性名 | 类型 | 默认值 | 说明 | 生效时机 | 最低版本 |
---|---|---|---|---|---|
size | String | default | 按钮的大小 | ||
type | String | default | 按钮的样式类型 | ||
plain | Boolean | false | 按钮是否镂空,背景色透明 | ||
disabled | Boolean | false | 是否禁用 | ||
loading | Boolean | false | 名称前是否带 loading 图标 | ||
form-type | String | 用于 <form/> 组件,点击分别会触发 <form/> 组件的 submit/reset 事件 |
|||
hover-class | String | button-hover | 指定按钮按下去的样式类。当 hover-class="none" 时,没有点击态效果 |
||
hover-stop-propagation | Boolean | false | 指定是否阻止本节点的祖先节点出现点击态 |
checkbox & label
checkbox-group 多项选择器,内部由多个checkbox组成;
check双标签自带label ;
属性名 | 类型 | 默认值 | 说明 |
---|---|---|---|
value | String | <checkbox/> 标识,选中时触发<checkbox-group/> 的 change 事件,并携带 <checkbox/> 的 value |
|
disabled | Boolean | false | 是否禁用 |
checked | Boolean | false | 当前是否选中,可用来设置默认选中 |
color | Color | checkbox的颜色,同css的color |
用来改进表单组件的可用性,使用for
属性找到对应的id
,或者将控件放在该标签下,当点击时,就会触发对应的控件;
目前可以绑定的控件有:<button/>
, <checkbox/>
, <radio/>
, <switch/>
;
属性名 | 类型 | 说明 |
---|---|---|
for | String | 绑定控件的 id |
1 | <checkbox-group> |
1 | Page({ |
submit & reset
属性名 | 类型 | 说明 |
---|---|---|
report-submit | Boolean | 是否返回 formId 用于发送模板消息 |
bindsubmit | EventHandle | 携带 form 中的数据触发 submit 事件,event.detail = {value : {‘name’: ‘value’} , formId: ‘’} |
bindreset | EventHandle | 表单重置时会触发 reset 事件 |
input
属性名 | 类型 | 默认值 | 说明 |
---|---|---|---|
value | String | 输入框的初始内容 | |
type | String | text | input 的类型 |
password | Boolean | false | 是否是密码类型 |
placeholder | String | 输入框为空时占位符 | |
placeholder-style | String | 指定 placeholder 的样式 | |
placeholder-class | String | “input-placeholder” | 指定 placeholder 的样式类 |
cursor-spacing | Number | 0 | 指定光标与键盘的距离,单位 px 。取 input 距离底部的距离和 cursor-spacing 指定的距离的最小值作为光标与键盘的距离 |
focus | Boolean | false | 获取焦点 |
confirm-type | String | “done” | 设置键盘右下角按钮的文字,仅在type=’text’时生效 |
confirm-hold | Boolean | false | 点击键盘右下角按钮时是否保持键盘不收起 |
selection-start | Number | -1 | 光标起始位置,自动聚集时有效,需与selection-end搭配使用 |
selection-end | Number | -1 | 光标结束位置,自动聚集时有效,需与selection-start搭配使用 |
adjust-position | Boolean | true | 键盘弹起时,是否自动上推页面 |
bindinput | EventHandle | 键盘输入时触发,event.detail = {value, cursor, keyCode},keyCode 为键值,处理函数可以直接 return 一个字符串,将替换输入框的内容。 | |
bindfocus | EventHandle | 输入框聚焦时触发,event.detail = { value, height },height 为键盘高度 | |
bindblur | EventHandle | 输入框失去焦点时触发,event.detail = {value: value} | |
bindconfirm | EventHandle | 点击完成按钮时触发,event.detail = {value: value} |
type 有效值:
值 | 说明 |
---|---|
text | 文本输入键盘 |
number | 数字输入键盘 |
idcard | 身份证输入键盘 |
digit | 带小数点的数字键盘 |
confirm-type 有效值:
值 | 说明 |
---|---|
send | 右下角按钮为“发送” |
search | 右下角按钮为“搜索” |
next | 右下角按钮为“下一个” |
go | 右下角按钮为“前往” |
done | 右下角按钮为“完成” |
1 | <input value="学习小程序" maxlength='10' cursor-spacing='10' confirm-type="next" confirm-hold="true" bindinput='inputEvent' bindfocus='focusEvent' bindblur='blurEvent' bindconfirm='confirmEvent'></input> |
1 | Page({ |
picker
从底部弹起的滚动选择器,现支持五种选择器,通过mode来区分,分别是普通选择器,多列选择器,时间选择器,日期选择器,省市区选择器,默认是普通选择器;
普通选择器:mode = selector
属性名 | 类型 | 默认值 | 说明 |
---|---|---|---|
range | Array / Object Array | [] | mode为 selector 或 multiSelector 时,range 有效 |
range-key | String | 当 range 是一个 Object Array 时,通过 range-key 来指定 Object 中 key 的值作为选择器显示内容 | |
bindcancel | EventHandle | 取消选择或点遮罩层收起 picker 时触发 | |
bindchange | EventHandle | value 改变时触发 change 事件,event.detail = {value: value} |
1 | <picker mode="selector" range="{{array}}"> |
1 | Page({ |
多列选择器:mode = multiSelector
属性名 | 类型 | 默认值 | 说明 |
---|---|---|---|
range | 二维Array / 二维Object Array | [] | mode为 selector 或 multiSelector 时,range 有效。二维数组,长度表示多少列,数组的每项表示每列的数据,如[["a","b"], ["c","d"]] |
range-key | String | 当 range 是一个 二维Object Array 时,通过 range-key 来指定 Object 中 key 的值作为选择器显示内容 | |
bindchange | EventHandle | value 改变时触发 change 事件,event.detail = {value: value} | |
bindcolumnchange | EventHandle | 某一列的值改变时触发 columnchange 事件,event.detail = {column: column, value: value},column 的值表示改变了第几列(下标从0开始),value 的值表示变更值的下标 |
1 | <view style='margin-top:150rpx;'>多列选择器</view> |
1 |
|
时间选择器:mode = time
属性名 | 类型 | 默认值 | 说明 |
---|---|---|---|
value | String | 表示选中的时间,格式为”hh:mm” | |
start | String | 表示有效时间范围的开始,字符串格式为”hh:mm” | |
end | String | 表示有效时间范围的结束,字符串格式为”hh:mm” |
日期选择器:mode = date
属性名 | 类型 | 默认值 | 说明 |
---|---|---|---|
value | String | 0 | 表示选中的日期,格式为”YYYY-MM-DD” |
start | String | 表示有效日期范围的开始,字符串格式为”YYYY-MM-DD” | |
end | String | 表示有效日期范围的结束,字符串格式为”YYYY-MM-DD” | |
fields | String | day | 有效值 year,month,day,表示选择器的粒度 |
fields 有效值:
值 | 说明 |
---|---|
year | 选择器粒度为年 |
month | 选择器粒度为月份 |
day | 选择器粒度为天 |
省市区选择器:mode = region
属性名 | 类型 | 默认值 | 说明 |
---|---|---|---|
value | Array | [] | 表示选中的省市区,默认选中每一列的第一个值 |
custom-item | String | 可为每一列的顶部添加一个自定义的项 |
1 | <view style='margin-top:100rpx;'>时间选择器</view> |
1 | Page({ |
pricker-view
picker-view-column:仅可放置于
1 | <picker-view style='width:100;height:250rpx;' bindchange="changeme"> |
1 | Page({ |
radio
radio-group单项选择器,内部由多个<radio/>
组成;
1 | <radio-group class="radio-group" bindchange="radioChange"> |
1 | Page({ |
slider
属性名 | 类型 | 默认值 | 说明 |
---|---|---|---|
min | Number | 0 | 最小值 |
max | Number | 100 | 最大值 |
step | Number | 1 | 步长,取值必须大于 0,并且可被(max - min)整除 |
color | Color | #e9e9e9 | 背景条的颜色(请使用 backgroundColor) |
selected-color | Color | #1aad19 | 已选择的颜色(请使用 activeColor) |
activeColor | Color | #1aad19 | 已选择的颜色 |
backgroundColor | Color | #e9e9e9 | 背景条的颜色 |
block-size | Number | 28 | 滑块的大小,取值范围为 12 - 28 |
block-color | Color | #ffffff | 滑块的颜色 |
show-value | Boolean | false | 是否显示当前 value |
bindchange | EventHandle | 完成一次拖动后触发的事件,event.detail = {value: value} | |
bindchanging | EventHandle | 拖动过程中触发的事件,event.detail = {value: value} |
1 | <slider min='1' max='100'show-value="true" block-color='green' bindchanging='changing'> |
1 | Page({ |
swich
属性名 | 类型 | 默认值 | 说明 |
---|---|---|---|
checked | Boolean | false | 是否选中 |
type | String | switch | 样式,有效值:switch, checkbox |
bindchange | EventHandle | checked 改变时触发 change 事件,event.detail={ value:checked} | |
color | Color | switch 的颜色,同 css 的 color |
1 | <view class="body-view"> |
1 | Page({ |
nav & value
属性名 | 类型 | 默认值 | 说明 |
---|---|---|---|
target | String | 在哪个目标上发生跳转,默认当前小程序 | |
url | String | 当前小程序内的跳转链接 | |
open-type | String | navigate | 跳转方式 |
delta | Number | 当 open-type 为 ‘navigateBack’ 时有效,表示回退的层数 | |
hover-stop-propagation | Boolean | false | 指定是否阻止本节点的祖先节点出现点击态 |
open-type 有效值:
值 | 说明 |
---|---|
navigate | 对应 wx.navigateTo 或 wx.navigateToMiniProgram 的功能 |
redirect | 对应 wx.redirectTo 的功能 |
switchTab | 对应 wx.switchTab 的功能 |
reLaunch | 对应 wx.reLaunch 的功能 |
navigateBack | 对应 wx.navigateBack 的功能 |
exit | 退出小程序,target=”miniProgram”时生效 |
1 | // page1 |
1 | // page2 |
image & video
image组件默认宽度300px、高度225px;
属性名 | 类型 | 默认值 | 说明 |
---|---|---|---|
src | String | 图片资源地址 | |
mode | String | ‘scaleToFill’ | 图片裁剪、缩放的模式 |
lazy-load | Boolean | false | 图片懒加载。只针对page与scroll-view下的image有效 |
bindload | HandleEvent | 当图片载入完毕时,发布到 AppService 的事件名,事件对象event.detail = {height:’图片高度px’, width:’图片宽度px’} |
内网穿透
小程序不能直接访问后台接口;
通过内网穿透实现暴露到公网;
工具:ngrok(获取安全Token);
在ngrok目录下执行cmd,完成安装;
执行命令 ngrok http 8080 暴露内网端口到公网中;复制所给的Forwarding网址,即可完成对内网的穿透;
wx.request
通过wx.request(OBJECT)实现小程序和后台API的通信;
类似与HTML中的AJAX通信;
Bug & Tip
tip
: content-type 默认为 ‘application/json’;
bug
: 开发者工具 0.10.102800
版本,header
的 content-type
设置异常;
OBJECT参数说明:
参数名 | 类型 | 必填 | 默认值 | 说明 |
---|---|---|---|---|
url | String | 是 | 开发者服务器接口地址 | |
data | Object/String/ArrayBuffer | 否 | 请求的参数 | |
header | Object | 否 | 设置请求的 header,header 中不能设置 Referer。 | |
method | String | 否 | GET | (需大写)有效值:OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT |
dataType | String | 否 | json | 如果设为json,会尝试对返回的数据做一次 JSON.parse |
responseType | String | 否 | text | 设置响应的数据类型。合法值:text、arraybuffer |
success | Function | 否 | 收到开发者服务成功返回的回调函数 | |
fail | Function | 否 | 接口调用失败的回调函数 | |
complete | Function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
success返回参数说明:
参数 | 类型 | 说明 |
---|---|---|
data | Object/String/ArrayBuffer | 开发者服务器返回的数据 |
statusCode | Number | 开发者服务器返回的 HTTP 状态码 |
header | Object | 开发者服务器返回的 HTTP Response Header |
1 | Page({ |
附录
综合练习
1 | <form bindsubmit='submitevent' style="font-size: 16px;"> |
1 | Page({ |
@ 2018年8月16日 16:21:10